/* app_fir_data.c */
#include "app_fft_data.h"

/*******************************************************************************
 * Variables
 ******************************************************************************/

/* 预分配足够长度的输入内存块, 可以支持在不同的使用场景下, 针对复数和实数的不同的内存规模 */

float32_t fft_input_f32[FFT_INPUT_NUM*2];
int32_t   fft_input_q31[FFT_INPUT_NUM*2];
int16_t   fft_input_q15[FFT_INPUT_NUM*2];

float32_t fft_output_f32[FFT_INPUT_NUM*2];
int32_t   fft_output_q31[FFT_INPUT_NUM*2];
int16_t   fft_output_q15[FFT_INPUT_NUM*2];

/* 1, 2, 1, 2, ... */
void app_init_rfft_input_f32(float32_t *buf, uint32_t num)
{
    for (uint32_t i = 0u; i < num; i++)
    {
        //buf[i] = (float32_t)((i % 2) + 1) / num;
        buf[i] = (float32_t)((i % 2) + 1);
        /* 对数组进行归一化, 先除以N.
         * 在数值上等价于将浮点数的值以整数存放, 之后以定点数读取出来的数值. */
    }
}

/* (1, 0), (2, 0), (1, 0), (2, 0), ... */
void app_init_cfft_input_f32(float32_t *buf, uint32_t num)
{
    for (uint32_t i = 0u ; i < num; i++)
    {
        //buf[i*2]   = (float32_t)((i % 2) + 1) / num;
        buf[i*2]   = (float32_t)((i % 2) + 1);
        buf[i*2+1] = 0.0f;
    }
}

/* 1, 2, 1, 2, ... */
void app_init_rfft_input_q31(int32_t *buf, uint32_t num)
{
    for (uint32_t i = 0u; i < num; i++)
    {
        buf[i] = (i % 2) + 1;
    }
}

/* (1, 0), (2, 0), (1, 0), (2, 0), ... */
void app_init_cfft_input_q31(int32_t *buf, uint32_t num)
{
    for (uint32_t i = 0u ; i < num; i++)
    {
        buf[i*2]   = (i % 2) + 1;
        buf[i*2+1] = 0u;
    }
}

/* 1, 2, 1, 2, ... */
void app_init_rfft_input_q15(int16_t *buf, uint32_t num)
{
    for (uint32_t i = 0u; i < num; i++)
    {
        buf[i] = (i % 2) + 1;
    }
}

/* (1, 0), (2, 0), (1, 0), (2, 0), ... */
void app_init_cfft_input_q15(int16_t *buf, uint32_t num)
{
    for (uint32_t i = 0u ; i < num; i++)
    {
        buf[i*2]   = (i % 2) + 1;
        buf[i*2+1] = 0u;
    }
}

/* EOF. */

